package com.rockwell.robot2015.model.states;

import com.rockwell.robot2015.model.Robot;

public interface IStateMachine {
	/**
	 * 
	 */
	void move();
	
	/**
	 * Change the current state
	 * @param state
	 */
	void changeState(IState state);
	
	/**
	 * Get the current state
	 * @return
	 */
	IState getState();
	
	/**
	 * Reset the state machine
	 */
	void reset();
	
	/**
	 * Get the robot object
	 * @return
	 */
	Robot robot();
	
	/**
	 * Called when the Robot goes to the Pause mode, or after a move is made in Step mode.
	 */
	void waitForResume();
}
